/*把file1中的内容复制到file2中*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <time.h>

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>


int main(int argc, char const *argv[])
{
    time_t seconds;
    struct tm * tmp;
    long line = 0;

    char buf[1027]={0};

    if (argc != 2)
    {
        fprintf(stderr,"程序错误：运行程序时请带入参数(./24-time filename)");
        exit(-1);
    }
    //第一次运行程序时，文件不存在创建文件 test.txt
    //第二次运行时，文件不存在，追加模式，文件位置设置到文件末尾，读取行号时，应该读不到内容
    //
    FILE * fp = fopen(argv[1],"a+");
    if (fp == NULL)
    {
        perror("fopen");
        exit(-1);
    }
    while(fgets(buf,1024,fp) != NULL)
    {
        line++;
    }
    while (1)
    {
        line++;
    seconds = time(NULL);
// localtime 的功能是把 seconds 这个变量解析成一个结构体 struct tm
    tmp = localtime(&seconds);
    fprintf(fp,"%ld, %04d-%02d-%02d %02d:%02d:%02d\n",line,tmp->tm_year+1900,tmp->tm_mon+1,tmp->tm_mday,
                                                tmp->tm_hour,tmp->tm_min,tmp->tm_sec);
    fflush(fp);
    sleep(1);
    }
    fclose(fp);
    return 0;
}

#if 0
int main(int argc, char const *argv[])
{
    FILE *fp;
    int ret = 0;
    if (argc != 2)
    {
        fprintf(stderr, "运行程序时，请代入参数 ./24-fdopen file\n");
        exit(-1);
    }
    fp = fopen(argv[1], "a+");
    if (fp == NULL)
    {
        perror("fopen");
        exit(-1);
    }
    int i = 0, t = 0;
    char buf[128] = {0};

    time_t seconds = time(NULL); // 或许系统时间的秒数;
    struct tm *tmp = localtime(&seconds);
    while (fgets(buf, 128, fp) != NULL)
    {
        t++;
    }
    i = t;
    while (1)
    {

        i++;
        sprintf(buf, "%d,%04d-%02d-%02d %02d:%02d:%02d \n", i, tmp->tm_year + 1900, tmp->tm_mon + 1, tmp->tm_mday,
                tmp->tm_hour, tmp->tm_min, tmp->tm_sec);

        printf("buf=%s", buf);
        ret = fwrite(buf, 1, 23, fp);
        if (ret < 0)
        {
            perror("fwrite");
            exit(-1);
        }
        fflush(fp); //实时同步数据到文件内
        sleep(1);   //延时100ms
    }

    return 0;
}
#endif


